//Camera Class Header File
//Declares structure for holding and controlling a camera in 3D Space
#pragma once

	//Include Files//
#include "Core.h"

	//Globals and Constants//

/**********************************************************************************************************************\
|	Camera Class Declaration																						   |
\**********************************************************************************************************************/
class Camera : public Core
{
protected:
	
	float		m_rightX, m_rightY, m_rightZ;
	float		m_upX,  m_upY,  m_upZ;
	float		m_lookX, m_lookY, m_lookZ;
	float		m_posX, m_posY, m_posZ;

	float		m_NearPlane, m_FarPlane;

	bool		m_CameraBob;

public:
	Camera();
	~Camera();

	void Init();
	//void Update();
	//void Render();
	void Exit();

	void MoveX(float diffX);
	void MoveY(float diffY);
	void MoveZ(float diffZ);
	void MoveXYZ(float diffX, float diffY, float diffZ);

	void Pitch();
	void Yaw();
	void Roll();
	void Rotate();

	void Zoom();
	void Orbit();
	void CameraBob();

	void EnableBobbing(bool Enabled);

};	//End Camera